package com.shujia.jinjie;

import org.apache.commons.io.IOUtils;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;

public class HdfsApi {
    public static void main(String[] args) throws Exception {
        //使用java代码来实现在hdfs上创建目录上传下载文件等操作
        //创建hadoop配置文件对象
        Configuration conf = new Configuration();
//        conf.set("dfs.replication","1");
        conf.set("fs.defaultFS", "hdfs://master:9000");

        //获取hdfs文件对象
        FileSystem fs = FileSystem.get(conf);

//        System.out.println("成功获取hdfs文件操作对象：" + fs);

        //在hdfs上创建一个文件夹
        // hadoop fs -mkdir /xx/xx/xx
        //public boolean mkdirs(Path f)
//        boolean b = fs.mkdirs(new Path("/bigdata32/data"));
//        System.out.println(b?"文件夹创建成功！":"文件夹创建失败！");

        // hadoop fs -put 本地路径 hdfs路径
//        fs.copyFromLocalFile(new Path("hadoop/data/words.txt"),new Path("/bigdata32/words.txt"));

        // hadoop fs -get hdfs路径 本地路径
//        fs.copyToLocalFile(new Path("/bigdata32/words.txt"),new Path("hadoop/data/words.txt"));


        //最新的上传和下载文件的做法，使用工具类进行上传和下载 IOUtils
//        BufferedReader br = new BufferedReader(new FileReader("hadoop/data/wc.txt"));
        //上传
//        IOUtils.copy(br, fs.create(new Path("/bigdata32/wc2.txt"), Short.parseShort("1")));
        //下载
        BufferedWriter bw = new BufferedWriter(new FileWriter("hadoop/data/wc3.txt"));
        IOUtils.copy(fs.open(new Path("/bigdata32/wc2.txt")), bw);

        bw.close();
    }
}
